package 滑动;

public class _3439重新安排会议得到最多空余时间I {
    /**
     * 
     * @param eventTime 表示一个活动的总时长，这个活动开始于 t = 0 ，结束于 t = eventTime
     * @param k         你可以重新安排 至多 k 个会议，安排的规则是将会议时间平移，且保持原来的 会议时长
     * @param startTime 第 i 个会议的时间为 [startTime[i], endTime[i]]
     * @param endTime   第 i 个会议的时间为 [startTime[i], endTime[i]]
     * @return int 移动会议后 最大化 相邻两个会议之间的 最长 连续空余时间
     */
    public int maxFreeTime(int eventTime, int k, int[] startTime, int[] endTime) {
        int ans = 0;
        int s = 0;
        for (int i = 0; i < startTime.length; i++) {
            s += get(i, eventTime, startTime, endTime);
            if (i < k) {
                continue;
            }
            ans = Math.max(ans, i);
            s -= get(i - k, eventTime, startTime, endTime);
        }
        return ans;
    }

    private int get(int i, int eventTime, int[] startTime, int[] endTime) {
        if (i == 0) {
            return startTime[0];
        }
        int n = startTime.length;
        if (i == n) {
            return eventTime - endTime[n - 1];
        }
        return startTime[i] - endTime[i - 1];
    }

    public static void main(String[] args) {
        
    }
}